#include<cairo.h>
#include<stdio.h>


int
main(int argc, char* argv[]){
  // 创建一个region对象，region对象是小型对象，只能复制不能引用
  // 此处只是为了演示复制机制才使用了region对象，现在并不是介绍region对象的好时机，因此本课对应WIKI中没有region对象及相关函数的介绍
  cairo_region_t *reg1 = cairo_region_create();
  // 复制region对象
  cairo_region_t *reg2 = cairo_region_copy(reg1);

  printf("reg1保存的地址：%lu\nreg2保存的地址：%lu\n两个地址不同，可见是复制了对象，而不是创建了对同一个对象的新引用\n\n", (unsigned long)reg1, (unsigned long)reg2);


  cairo_surface_t *sfc1 = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 1000, 1000);
  cairo_surface_t *sfc2 = cairo_surface_reference(sfc1);

  printf("sfc1保存的地址：%lu\nsfc2保存的地址：%lu\n两个地址相同，可见并没有复制对象，而只是创建了对同一个对象的新引用\n\n", (unsigned long)sfc1, (unsigned long)sfc2);
}//main